package com.bartender.order.mapper;

import java.util.List;
import java.util.Map;
import java.math.BigDecimal;

import com.bartender.order.domain.OrderTable;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;

/**
 * 订单管理Mapper接口
 * 
 * @author bartender
 * @date 2024-12-19
 */
public interface OrderTableMapper 
{
    /**
     * 查询订单管理
     * 
     * @param orderId 订单管理主键
     * @return 订单管理
     */
    public OrderTable selectOrderTableByOrderId(Long orderId);

    public OrderTable selectOrderTableByOrderIdToFront(Long orderId);

    public List<OrderTable> selectOrderTableByOpenid(String openid);

    /**
     * 查询订单管理列表
     * 
     * @param orderTable 订单管理
     * @return 订单管理集合
     */
    public List<OrderTable> selectOrderTableList(OrderTable orderTable);

    /**
     * 新增订单管理
     * 
     * @param orderTable 订单管理
     * @return 结果
     */
    public int insertOrderTable(OrderTable orderTable);

    /**
     * 修改订单管理
     * 
     * @param orderTable 订单管理
     * @return 结果
     */
    public int updateOrderTable(OrderTable orderTable);

    /**
     * 删除订单管理
     * 
     * @param orderId 订单管理主键
     * @return 结果
     */
    public int deleteOrderTableByOrderId(Long orderId);

    /**
     * 批量删除订单管理
     * 
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteOrderTableByOrderIds(Long[] orderIds);

    /**
     * 查询订单酒品详情
     * 
     * @param orderId 订单ID
     * @return 订单酒品详情
     */
    public List<Map<String, Object>> selectOrderDrinkByOrderId(Long orderId);


    /**
     * 插入订单酒品详情
     * 
     * @param orderDrink 订单酒品信息
     * @return 结果
     */
    public int insertOrderDrink(Map<String, Object> orderDrink);

    int insertDiyRecord(Map<String, Object> params);
    
    void insertDiyIngredientMapping(Map<String, Object> params);
    
    BigDecimal selectIngredientPrice(Long ingredientId);
    
    void insertOrder(OrderTable orderTable);

    public List<Map<String, Object>> selectDiyDetailByDiyId(Long diyId);

    Long selectLastDiyId();

    /**
     * 查询原料名称
     * 
     * @param ingredientId 原料ID
     * @return 原料名称
     */
    String selectIngredientName(Long ingredientId);

    int updateEvaluation(OrderTable orderTable);

    String selectDiyNameByDiyId(Long diyId);
}
